package src.Aula06.Ex02;
import java.util.Arrays;

public class Triangulo extends Cor {


    //dados (declaraçao de lados)
    private double lado1, lado2, lado3;

    public Triangulo(double lado1,double lado2,double lado3, String cor){
        super(cor);
        this.lado1=lado1;
        this.lado2=lado2;
        this.lado3=lado3;
    }
    public double getLado1() {
        return lado1;
    }

    public double getLado2() {
        return lado2;
    }

    public double getLado3() {
        return lado3;
    }

@Override  //nao cria metodos novos
    public String toString() {
        return "Lado 1 = " + lado1 + "; Lado 2 =  " + lado2 + "; Lado 3 = " + lado3+ "; Cor = "+getCor();
    }

    

    // equals

    public boolean equals(Triangulo outroTriangulo) {
        double[] esteTriangulo = { lado1, lado2, lado3};

        double outroTrianguloL1 = outroTriangulo.getLado1();
        double outroTrianguloL2 = outroTriangulo.getLado2();
        double outroTrianguloL3 = outroTriangulo.getLado3();

        double[] ladosOutroTriangulo = { outroTrianguloL1, outroTrianguloL2, outroTrianguloL3 };

        Arrays.sort(esteTriangulo);
        Arrays.sort(ladosOutroTriangulo);

        for (int i = 0; i <= 2; i++) {

            if (esteTriangulo[i] != ladosOutroTriangulo[i])
                return false;
            if (!outroTriangulo.getCor().equals(getCor()))
                return false;  
        }
        return true;
    }

    //set

        public void setLado1(double novoLado1) {
            this.lado1 = novoLado1;
        }
    
        public void setLado2(double novoLado2) {
            this.lado2 = novoLado2;
        }
    
        public void setLado3(double novoLado3) {
            this.lado3 = novoLado3;
        }

        public double perimetro(){
            return lado1+lado2+lado3;
        } 
    
        public double area(){

            double semiPerimetro = (this.perimetro() / 2);

        
            // Fórmula de Heron
            return Math.sqrt(semiPerimetro * (semiPerimetro - lado1) * (semiPerimetro - lado2) * (semiPerimetro - lado3));
    
        }

}
